package br.webchild.client;

import java.util.Date;

import br.webchild.classes.MedicoClass;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.DateDisplayFormat;
import com.smartgwt.client.types.TitleOrientation;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.DateTimeItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.validator.RegExpValidator;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
import com.smartgwt.client.widgets.toolbar.ToolStripButton;
import com.sun.corba.se.impl.ior.NewObjectKeyTemplateBase;

public class Medico extends Window {
	private Tab abaCadastro;
	private Tab abaConsulta;
	private final TextItem ti_Crm;
	private final TextItem tI_Nome;
	private final TextItem tI_Especialidade;
	private final TextItem tI_Endereco;
	private final TextItem tI_Numero;
	private final TextItem tI_Complemento;
	private final TextItem tI_Bairro;
	private final TextItem tI_Cidade;
	private final SelectItem sI_Estado;
	private final TextItem tI_TelFixo;
	private final TextItem tI_TelCel;
	private final SelectItem sI_sexo;
	private final DateTimeItem dti_data_nasc;
	private final TextItem ti_rg;
	private final TextItem ti_cpf;
	private final TextItem ti_ativo;
	private final DateTimeItem dti_data_cad;
	private final MedicoServicoAsync medicoServico = GWT.create(MedicoServico.class);
	
	final AsyncCallback<Boolean> call = new AsyncCallback<Boolean>(){

		@Override
		public void onFailure(Throwable caught) {
			SC.say("erro fatal...->" + caught);
		}

		@Override
		public void onSuccess(Boolean result) {
			SC.say("Caminho servlet OK ->" + result);
		}};

	public Medico() {

		this.setTitle("Medico");
		setSize("700px", "520px");
		this.setShowMinimizeButton(false);
		this.setIsModal(true);
		this.centerInPage();
		this.setHeaderIcon("/imagens/medical_bag.png");

		final java.sql.Date data = new java.sql.Date(System.currentTimeMillis()); // DATA ATUAL

		TabSet tabelaAbas = new TabSet();
		tabelaAbas.setHeight("100%");

//		*****************ABA CADASTRO******************
		abaCadastro = new Tab("Cadastro");
		
		VLayout vl_cadastro = new VLayout();
		vl_cadastro.setHeight("168px");
		
		ToolStrip menu_Cadastro = new ToolStrip();
		menu_Cadastro.setWidth("100%");
		
		ToolStripButton btn_Gravar = new ToolStripButton("Salvar");
		btn_Gravar.setIcon("/imagens/save_add.png");
		menu_Cadastro.addButton(btn_Gravar);
		
		ToolStripButton btn_Limpar = new ToolStripButton("Limpar");
		btn_Limpar.setIcon("/imagens/clear.png");
		menu_Cadastro.addButton(btn_Limpar);
		
		vl_cadastro.addMember(menu_Cadastro);
		
		final DynamicForm form_cadastro = new DynamicForm();
		form_cadastro.setHeight("108px");
		form_cadastro.setNumCols(4);
		form_cadastro.setTitleOrientation(TitleOrientation.TOP);
		
		RegExpValidator validaCPF = new RegExpValidator();  
		validaCPF.setExpression("^([a-zA-Z0-9_.\\-+])+@(([a-zA-Z0-9\\-])+\\.)+[a-zA-Z0-9]{2,4}$");
		
		RegExpValidator validaNOME = new RegExpValidator();  
		validaCPF.setExpression("^([a-zA-Z0-9_.\\-+])");
		
		ti_Crm = new TextItem();
		ti_Crm.setTitle("CRM");
		
		tI_Nome = new TextItem();
		tI_Nome.setTitle("Nome");
		//tI_Nome.setValidators(validaNOME);
		
		tI_Especialidade = new TextItem();
		tI_Especialidade.setTitle("Especialidade");
		
		tI_Endereco = new TextItem();
		tI_Endereco.setTitle("Endereco");
		
		tI_Numero = new TextItem();
		tI_Numero.setTitle("Numero");
		
		tI_Complemento = new TextItem();
		tI_Complemento.setTitle("Complemento");
		
		tI_Bairro = new TextItem();
		tI_Bairro.setTitle("Bairro");
		
		tI_Cidade = new TextItem();
		tI_Cidade.setTitle("Cidade");
		
		sI_Estado = new SelectItem();
		sI_Estado.setTitle("Estado");
		sI_Estado.setValueMap("AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO");

		tI_TelFixo = new TextItem();
		tI_TelFixo.setTitle("Fone Fixo");
		tI_TelFixo.setMask("(##)####-####");
		
		tI_TelCel = new TextItem();
		tI_TelCel.setTitle("Fone Celular");
		tI_TelCel.setMask("(##)####-####"); 
		
		sI_sexo = new SelectItem();
		sI_sexo.setTitle("Sexo");
		sI_sexo.setValueMap("Masculino", "Feminino");
		
		dti_data_nasc = new DateTimeItem();
		dti_data_nasc.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
		dti_data_nasc.setTitle("Data Nascimento");
		dti_data_nasc.setTextAlign(Alignment.LEFT);
		
		dti_data_cad = new DateTimeItem();
		dti_data_cad.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
		dti_data_cad.setTitle("Data Cadastro");
		dti_data_cad.setTextAlign(Alignment.LEFT);
		
		ti_rg = new TextItem();
		ti_rg.setTitle("RG");
		ti_rg.setMask("#.###.###-#");
		
		ti_cpf = new TextItem();
		ti_cpf.setTitle("CPF");
		ti_cpf.setMask("###.###.###-##");
		//ti_cpf.setValidators(validaCPF);
		
		ti_ativo = new TextItem();
		ti_ativo.setTitle("Status");
		

		
		

		
//		*****************EVENTOS CADASTRO*****************
		btn_Limpar.addClickHandler(new ClickHandler() {			
			@Override
			public void onClick(ClickEvent event) {
			//limpaCampos();
			
			}
		});
		
		form_cadastro.setItems(ti_Crm,
				tI_Nome,
				tI_Especialidade,
				tI_Endereco,
				tI_Numero,
				tI_Complemento,
				tI_Bairro,
				tI_Cidade,
				sI_Estado,
				sI_sexo,
				ti_rg,
				ti_cpf,
				tI_TelFixo,
				tI_TelCel,
				dti_data_nasc,
				ti_ativo);
		
		btn_Gravar.addClickHandler(new ClickHandler() {
			MedicoClass medicoClass;
			
			@Override
			public void onClick(ClickEvent event) {
				medicoClass = new MedicoClass();
				String sexo = "";
				if (sI_sexo.getValueAsString().equals("Masculino")) {sexo = "M";} else {sexo = "F";}	
				medicoClass.setCrm(Integer.parseInt(ti_Crm.getValueAsString()));
				medicoClass.setNome(tI_Nome.getValueAsString());
				medicoClass.setEspecialidade(tI_Especialidade.getValueAsString());
				medicoClass.setEndereco(tI_Endereco.getValueAsString());
				medicoClass.setNumero(Integer.parseInt(tI_Numero.getValueAsString()));
				medicoClass.setComplemento(tI_Complemento.getValueAsString());
				medicoClass.setBairro(tI_Bairro.getValueAsString());
				medicoClass.setCidade(202);
				medicoClass.setSexo(sexo);
				medicoClass.setRg(ti_rg.getValueAsString());
				medicoClass.setCpf(ti_cpf.getValueAsString());
				medicoClass.setTelCel(tI_TelCel.getValueAsString());
				medicoClass.setTelFixo(tI_TelFixo.getValueAsString());
				medicoClass.setDataCad(data);
				medicoClass.setDataNasc(data);
				medicoClass.setAtivo("S");
				System.out.println(sI_sexo.getValueAsString()+ "-"+sexo );
				//System.out.println(medicoClass.getNome());
				medicoServico.novo(medicoClass,call);				
			}
		});
		
		vl_cadastro.addMember(form_cadastro);
		abaCadastro.setPane(vl_cadastro);
		tabelaAbas.addTab(abaCadastro);

		
//		***************ABA CONSULTA***************
		abaConsulta = new Tab("Consulta");
		
		VLayout layout = new VLayout();
		
		DynamicForm form_consulta = new DynamicForm();
		form_consulta.setNumCols(4);
		layout.addMember(form_consulta);
		
		TextItem ti_cid_pes = new TextItem();
		ti_cid_pes.setTitle("CRM");
		
		TextItem ti_nome_pes = new TextItem();
		ti_nome_pes.setTitle("Nome");
		
		TextItem ti_especialidade_pes = new TextItem();
		ti_especialidade_pes.setTitle("Especialidade");
		
		DateTimeItem dti_data_pes = new DateTimeItem();
		dti_data_pes.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
		dti_data_pes.setTitle("Data");
		
		form_consulta.setItems(ti_cid_pes, ti_especialidade_pes, ti_nome_pes, dti_data_pes);
		
		ToolStrip menu_consulta = new ToolStrip();
		menu_consulta.setWidth("100%");
		
		ToolStripButton toolStripButton = new ToolStripButton("Pesquisar");
		toolStripButton.setIcon("/imagens/pesquisar.png");
		menu_consulta.addButton(toolStripButton);

		layout.addMember(menu_consulta);
		
		ListGrid listGrid = new ListGrid();
		layout.addMember(listGrid);
		abaConsulta.setPane(layout);
		tabelaAbas.addTab(abaConsulta);
		
//		*********TODAS AS ABAS***********
		addItem(tabelaAbas);

	} // FINAL DO CONSTRUTOR
	
	public void limpaCampos(){
		ti_Crm.setValue("");
		tI_Nome.setValue("");
		tI_Especialidade.setValue("");
		tI_Endereco.setValue("");
		tI_Numero.setValue("");
		tI_Complemento.setValue("");
		tI_Bairro.setValue("");
		tI_Cidade.setValue("");
		sI_Estado.setValue("");
		sI_sexo.setValue("");
		ti_rg.setValue("");
		ti_cpf.setValue("");
		tI_TelFixo.setValue("");
		tI_TelCel.setValue("");
	}
}